The domain name system (DNS) utilizes a hierarchical structure to associate fully qualified domain names to a particular internet protocol (IP) address in response to a DNS query. For example, if a user visits the website www.example.com on their computer's Internet browser, typically, the stub resolver on the computer would (1) first check its own DNS cache for a suitable response; (2) if not available in the cache, query a recursive name server or possibly additional levels of the delegation graph from the root DNS server downward with the same information, expecting a reply. If the queried system has the information or is authoritative for the precise question, it provides a response or error. If it does not, but knows who does, it provides a delegation/referral to a server that should have more precise information. To leverage larger caching mechanisms, a DNS resolver recursive name server may be used between steps (1) and (2). Because a DNS resolver services many users, it typically holds a larger cache, helping to reduce the load on root servers and registry servers and often minimize response times for users because it is commonly topologically closer to the client. A DNS resolver may also act as a recursive name server, handling the multiple transactions and following delegations/referral chains between different name servers to resolve the final IP address for the resource in question, simply passing the final answer back to the user's computer. A DNS resolver may ultimately provide in its response a network layer identifier or service location id, which in some instances may be the same.
It is therefore desirable to have a solution that maintains some level of cache at an intermediate name server, while recognizing that the response may depend on the context in an adaptive approach.